<?php
	//验证码类
 	class Verify{
		private $CI;
		private $charset = '2345678900987654320023456789'; //随机因子abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789
  		private $code;       //验证码
  		private $codelen = 4;     //验证码长度
  		private $width = 80;     //宽度
  		private $height = 35;     //高度
  		private $img;        //图形资源句柄
  		private $font;        //指定的字体
  		private $fontsize = 25;    //指定字体大小
  		private $fontcolor;      //指定字体颜色
  
  		//构造方法初始化
  		public function __construct() {
   			$this->CI = & get_instance();
			$this->font = './static/default/font/week.ttf';
			//$this->font= str_replace("\\","/",$this->font);
  		}
		
 		 //生成随机码
  		private function createCode() {
   			$_len = strlen($this->charset)-1;
   			for ($i=0;$i<$this->codelen;$i++) {
    				$this->code .= $this->charset[mt_rand(0,$_len)];
   			}
			$this->xcode = $this->code;
			
			$this->CI->session->set_userdata('capchaCode', strtolower($this->xcode));
			
  		}
  
  		//生成背景
  		private function createBg() {
   			$this->img = imagecreatetruecolor($this->width, $this->height);
   			$color = imagecolorallocate($this->img, mt_rand(235,235), mt_rand(235,235), mt_rand(235,235));
   			imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);
  		}
  
  		//生成文字
  		private function createFont() { 
   			$_x = $this->width / $this->codelen/1.2;
			
   			for ($i=0;$i<$this->codelen;$i++) {
    				$this->fontcolor = imagecolorallocate($this->img,mt_rand(137,137),mt_rand(137,137),mt_rand(137,137));
    				imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+10,$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);
   			}
			
			
  		}
  
  		//生成线条、雪花
  		private function createLine() {
   			for ($i=0;$i<4;$i++) {
    				$color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
    				imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
   			}
   			for ($i=0;$i<100;$i++) {
    				$color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
    				imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'.',$color);
   			}
  		}
  
  		//输出
  		private function outPut() {
			//echo $this->xcode;
			
			ob_clean();
			header('Content-type:image/png');
   			imagepng($this->img);
   			imagedestroy($this->img);
  		}
  
  		//对外生成
  		public function doimg($width=100,$height=100) {
			$this->width=$width;
			$this->height=$height;
   			$this->createBg();
   			$this->createCode();
   			$this->createLine();
   			$this->createFont();
  	 		$this->outPut();
			
			
  		}
  
  		//获取验证码
  		public function getCode() {
                    return strtolower($this->code);
  		}
  
 }